TypeScript 93.3%
JavaScript 4.4%
CSS 2.3%
1/**2 * Author: Simon-Pierre Boucher3 * Contact: contact@spboucher.ai4 * Project: Hilmacorp.ai — Web Platform5 * File: app/[locale]/industries/page.tsx6 * Description: Industries page — the twelve sectors served by Hilmacorp.ai7 */89import type { Metadata } from "next";10import Container from "@/components/Container";11import SectionHeading from "@/components/SectionHeading";12import { getMessages, isLocale, type Locale } from "@/lib/i18n";1314export async function generateMetadata({15 params,16}: {17 params: Promise<{ locale: string }>;18}): Promise<Metadata> {19 const { locale } = await params;20 if (!isLocale(locale)) return {};21 const { meta } = getMessages(locale);22 return { title: { absolute: meta.industries.title }, description: meta.industries.description };23}2425export default async function IndustriesPage({26 params,27}: {28 params: Promise<{ locale: string }>;29}) {30 const { locale } = await params;31 const { industries } = getMessages(locale as Locale);3233 return (34 <>35 <section className="relative overflow-hidden border-b border-line">36 <div className="grid-backdrop absolute inset-0" aria-hidden="true" />37 <Container className="relative py-20 sm:py-28">38 <SectionHeading as="h1" title={industries.title} lead={industries.lead} />39 </Container>40 </section>4142 <section className="py-16 sm:py-20">43 <Container>44 <ul className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">45 {industries.items.map((industry) => (46 <li47 key={industry.title}48 className="rounded-2xl border border-line bg-card p-7 shadow-sm transition-colors hover:border-accent"49 >50 <h2 className="font-display text-lg font-semibold text-ink">51 {industry.title}52 </h2>53 <p className="mt-2 text-sm leading-relaxed text-ink-faint">{industry.body}</p>54 </li>55 ))}56 </ul>57 </Container>58 </section>59 </>60 );61}62